/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *Algoritmos y Estructurade Datos
 * 11 de julio del 2013
 * Ejericio No. 1
 * Clae principal para la ejecucion en la line de comando
 *  VICTOR FUENTES 12298
 *  SAMANTHA CACTÚN 12382
 *  YUCELY BEB 12537
 */

import java.util.Scanner;
public class Driver {
    
    public static void main(String[] args){
        
        //objeto de ingreso scanner
        Scanner ingreso=new Scanner(System.in);
        Scanner ingreso2=new Scanner(System.in);
        int in=0;
        int largo=0;//variable para el ingreso del largo
        int i=0;//variable a usar para diferentes propositos
        int prueba=0;//variable ingreso despues de configurar el candado
        boolean error=true;//variable para saber prueba esta en formato o no
        String hi="0";//variable para comparar con reset
        thelock candado;
        
        System.out.println("\nAlgoritmos y Estructura de Datos");
        System.out.println("\nEjercicio No. 1, Candado");
        
        System.out.println("\nIngrese el largo de la contraseña: ");
        try{
            largo=ingreso.nextInt();
            if(largo>0){
                
                candado=new thelock(largo);  
                i=0;
                
                while (i<largo){//ciclo para pedir la cantidad de ingreso, igual al largo de la lista-1
                    System.out.println("\nIngrese digito "+i+": ");
                    in=ingreso.nextInt();
                    
                    candado.ingreso(i, in);
                    i++;
                }
                 //System.out.println(candado);              
            }else{
                System.out.println("\nError, se usará comfiguración predeterminada");
                candado=new thelock();
                //System.out.println(candado);
            }
                
            
        }catch(Exception e){
            System.out.println("\nError, se usará  comfiguración predeterminada");
            candado=new thelock();
            //System.out.println(candado);
        }
        
        
            System.out.println(candado);
        //continuacion del cogido para abrir el candado despues de que se configuro
            
            System.out.println("\nEl candado esta cerrado, escriba reset si ingreso un");
            System.out.println("\ndigito erroneo, tendrá que volver a escribr su contraseña.");
           i=0;//reset de la variable i
           while (i<candado.getLargo()){
                    //System.out.println("alerta");
                    error=true;//actualizar error para que entre a ciclo   
                    while(error==true){
                        try{
                             System.out.println("\nIngrese su contraseña, indice "+i+":" );
                             hi=ingreso2.nextLine();//revisar si ingreso reset, esto reinicia el ciclo
                             //if(hi.equals("reset")){
                                 //System.out.println("\nSe reinicara el ingreso de la contraseña");
                                 //i=-1;
                             //}else{//si no ingresa reset, se introduce informacion para comparar
                                 //prueba=ingreso2.nextInt();
                                 prueba=Integer.parseInt(hi);
                                 candado.setIndice(i);
                                 candado.press(prueba);//ingreso de (valor a probar, indice con el que se compara en la lista)
                                 error=false;
                             
                             
                             
                             //}
                         }catch(Exception a){
                             if(hi.equals("reset")){
                                 System.out.println("\nSe reiniciara el ingreso de la contraseña");
                                 i=-1;
                                 error=false;
                                 //ingreso2.next();
                             }else{
                                    System.out.println("\nError de ingreso");
                                    error=true;
                                    //ingreso2.next();
                             }
                             
                             
                         }//fin del catch



                    }//fin del while(error==true)
               
               
               
               i++;//actualizacion del indice con el que se comparan los ingresos con los valores de la contraseña guardada
           }//fin de ciclo para ingresar la constraseña
         //-------------------------------------------------
         //inicio para validacion de contraseña
           
         System.out.println("\nComprobando contraseña...");  
         if(candado.isLocked()==false){
             candado.lock();//llamada al metodo para hacer variable estado=false
             System.out.println("\nCandado Abierto");
         }else{
             System.out.println("\nContraseña incorrecta");
         } 
            
           
           
     }
}
